using System;
using EnvDTE;

namespace NUnitGenAddIn.Core.Test
{
	public class MockDTE : DTE
	{
		private object _result = null;
		private Document _activeDocument;

		public object Result
		{
			get { return _result; }
		}

		public void SetActiveDocument(Document value)
		{
			_activeDocument = value;
		}
		#region _DTE Members

		public virtual Document ActiveDocument
		{
			get { return _activeDocument; }
		}

		public object ActiveSolutionProjects
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Window ActiveWindow
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public AddIns AddIns
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public DTE Application
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Microsoft.Office.Core.CommandBars CommandBars
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public string CommandLineArguments
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Commands Commands
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public ContextAttributes ContextAttributes
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public DTE DTE
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Debugger Debugger
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public vsDisplay DisplayMode
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

		public Documents Documents
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public string Edition
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Events Events
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public void ExecuteCommand(string CommandName, string CommandArgs)
		{
			_result = "CommandName:" + CommandName + ";CommandArgs:" + CommandArgs;
		}

		public string FileName
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Find Find
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public string FullName
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public object GetObject(string Name)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		public Globals Globals
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public ItemOperations ItemOperations
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public wizardResult LaunchWizard(string VSZFile, ref object[] ContextParams)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		public int LocaleID
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Macros Macros
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public DTE MacrosIDE
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Window MainWindow
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public vsIDEMode Mode
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public string Name
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public ObjectExtenders ObjectExtenders
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Window OpenFile(string ViewKind, string FileName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		public void Quit()
		{
			throw new Exception("The method or operation is not implemented.");
		}

		public string RegistryRoot
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public string SatelliteDllPath(string Path, string Name)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		public SelectedItems SelectedItems
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Solution Solution
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public SourceControl SourceControl
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public StatusBar StatusBar
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public bool SuppressUI
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

		public UndoContext UndoContext
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public bool UserControl
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

		public string Version
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public WindowConfigurations WindowConfigurations
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public Windows Windows
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

		public bool get_IsOpenFile(string ViewKind, string FileName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		public Properties get_Properties(string Category, string Page)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		#endregion
	}
}